package ar.edu.utn.frgp.labtec.entities;

import java.io.Serializable;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity()
@Table(name = "DEPARTAMENTO")
public class Departamento implements Serializable {

	private static final long serialVersionUID = 1L;

	@Id
	@Column(name = "COD_DEPTO")
	private String codDepto;

	@Column(name = "NOMBRE_DEPTO")
	private String nombreDepto;
	
	@OneToMany(mappedBy = "departamento", fetch = FetchType.LAZY)	
	private List<Laboratorio> laboratorios;

	// H= habilitado, I=inhabilitado
	@Enumerated(EnumType.STRING)
	@Column(name = "ESTADO")
	private EstadoEnum estado;

	//############ EQUALS ############
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Departamento other = (Departamento) obj;
		if (codDepto == null) {
			if (other.codDepto != null)
				return false;
		} else if (!codDepto.equals(other.codDepto))
			return false;
		return true;
	}

	//############ CONSTRUCTOR ############
	public Departamento() {
	}

	//############ GETTERS Y SETTERS ############
	public String getCodDepto() {
		return codDepto;
	}


	public void setCodDepto(String codDepto) {
		this.codDepto = codDepto;
	}
	

	public String getNombreDepto() {
		return nombreDepto;
	}


	public void setNombreDepto(String nombreDepto) {
		this.nombreDepto = nombreDepto;
	}


	public EstadoEnum getEstado() {
		return estado;
	}


	public void setEstado(EstadoEnum estado) {
		this.estado = estado;
	}

	@Override
	public String toString() {
		return codDepto + " - " + nombreDepto ;
	}

	public List<Laboratorio> getLaboratorios() {
		return laboratorios;
	}

	public void setLaboratorios(List<Laboratorio> laboratorios) {
		this.laboratorios = laboratorios;
	}
	
}
